#include <stdio.h>
#include <string.h>
#include <stdbool.h>

// 有效的括号
int changeChar(char s)
{
    switch (s)
    {
    case '(':
        return 1;
        break;
    case ')':
        return -1;
        break;
    case '{':
        return 2;
        break;
    case '}':
        return -2;
        break;
    case '[':
        return 3;
        break;
    case ']':
        return -3;
        break;
    default:
        return 0;
        break;
    }
}

bool isValid(char *s)
{
    for (int i = 0; i < strlen(s); i += 2)
    {
        if ((changeChar(s[i]) + changeChar(s[i + 1]) == 0) && (changeChar(s[i]) > changeChar(s[i + 1])))
        {
            return true;
        }
        else
        {
            for (int j = 0; j < strlen(s) / 2; j++)
            {
                if ((changeChar(s[j]) + changeChar(s[strlen(s) - 1 - j])) == 0 && (changeChar(s[j]) > changeChar(s[strlen(s) - 1 - j])))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
    }
}

int main()
{
    char *s = "[()]";
    printf("%d\n", isValid(s));
}
